package com.zaizai.mapper;

import java.util.List;
import com.zaizai.domain.Order;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.Map;
import java.util.Date;

/**
 * 订单Mapper接口
 * 
 * @author zaiZai
 * @date 2024-11-26
 */
public interface OrderMapper 
{
    /**
     * 查询订单
     * 
     * @param id 订单主键
     * @return 订单
     */
    public Order selectOrderById(Long id);

    /**
     * 查询订单列表
     * 
     * @param order 订单
     * @return 订单集合
     */
    public List<Order> selectOrderList(Order order);

    /**
     * 新增订单
     * 
     * @param order 订单
     * @return 结果
     */
    public int insertOrder(Order order);

    /**
     * 修改订单
     * 
     * @param order 订单
     * @return 结果
     */
    public int updateOrder(Order order);

    /**
     * 删除订单
     * 
     * @param id 订单主键
     * @return 结果
     */
    public int deleteOrderById(Long id);

    /**
     * 批量删除订单
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteOrderByIds(Long[] ids);

    // 新增的统计方法
    long getTotalSales();
    
    long getLastMonthSales();
    
    int getTotalOrders();
    
    int getLastMonthOrders();
    
    int getPendingOrders();
    
    int getLastMonthPendingOrders();
    
    List<Map<String, Object>> getSalesTrend(
        @Param("startDate") Date startDate, 
        @Param("endDate") Date endDate, 
        @Param("timeRange") String timeRange
    );
    
    List<Map<String, Object>> getHotProducts();
    
    List<Map<String, Object>> getOrderStatusDistribution();
}
